package com.lovo.project.service;

import com.lovo.project.model.ProductDO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @title 商品业务接口
 * @author: chenqiang
 * @date: 2020/11/3 14:42
 */
public interface ProductService {
     /**
      * 添加商品
      * 若影响行数为0,则抛出添加商品异常
      * @param productDO 商品对象
      */
      void addProduct(ProductDO productDO);

     /**
      * 修改商品的价格和专属规格
      * 若影响行数为0,则抛出修改商品异常
      * @param id 商品编号
      * @param productMoney 商品价格
      * @param productExclusiveSpecification 商品专属规格
      */
      void updateProduct(@Param("id") Integer id,@Param("money") Integer productMoney,@Param("exclusiveSpecification") String productExclusiveSpecification);

     /**
      * 根据id查询物品详细信息
      * 若影响行数为0,则抛出查询商品异常
      * @param id 商品编号
      * @return ProductDO 商品对象
      */
      ProductDO findById(Integer id);

     /**
      *  根据店铺id查询商品，并且可以根据商品名模糊查询商品，如果商品名为null就会查询所有商品
      * 若list的长度为0,则抛出查询商品异常
      * @param  id
      * @param productName
      * @return  List<ProductDO> 商品集合
      */
     List<ProductDO> findAllByProductName(Integer id,String productName);

    /**
     * 通过修改状态进行商品的软删除
     * 若影响行数为0,则抛出删除商品异常
     * @param id 商品编号
     */
     void UpdateProductByIsDelete(Integer id);


}
